﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;

namespace Arthus.Korisnici
{
    class Korisnici
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;

        public void PopuniListBox(ListBox lb)
        {
            lb.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT IME FROM KORISNICI;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();
                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    lb.Items.Add(dataTable.Rows[i][0]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void DodajKorisnika(TextBox ime, TextBox lozinka, TextBox ponovljenaLozinka)
        {
            if (statickePromenljive.ulogovan.Equals("ADMIN") || statickePromenljive.ulogovan.Equals("SYSTEM"))
            {
                if (ime.Text.Trim().Length > 0 && lozinka.Text.Trim().Length > 0 && ponovljenaLozinka.Text.Trim().Length > 0)
                {
                    if (lozinka.Text.Equals(ponovljenaLozinka.Text))
                    {
                        try
                        {
                            konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                            konekcija.Open();
                            komanda.Connection = konekcija;
                            komanda.CommandType = CommandType.Text;
                            komanda.CommandText = string.Format("INSERT INTO `korisnici`(`IME`, `PASS`, `FLAG`) VALUES ('" + ime.Text + "',MD5('" + lozinka.Text + "'), 'FLAG')");
                            int response = komanda.ExecuteNonQuery();
                            MessageBox.Show("Uspešno registrovan novi korisnik!");
                        }
                        catch (MySqlException ex)
                        {
                            MessageBox.Show("Već postoji korisnik sa takvim korisničkim imenom!");
                        }
                        catch (FormatException ex)
                        {
                            MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                        }
                        finally
                        {
                            konekcija.Close();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Lozinke se ne podudaraju!");
                    }
                }
                else {
                    MessageBox.Show("Morate popuniti sva polja!");
                }
            }
            else
            {
                MessageBox.Show("Morate biti ulogovani kao administrator da biste napravili ove promene!");
            }
        }

        public void ObrisiKorisnika(string ime)
        {
            if (statickePromenljive.ulogovan.Equals("ADMIN") || statickePromenljive.ulogovan.Equals("SYSTEM"))
            {
                try
                {
                    //konekcija sa bazom
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandType = CommandType.Text;
                    komanda.CommandText = "DELETE FROM `korisnici` WHERE IME='"+ime+"';";
                    komanda.ExecuteNonQuery();
                    MessageBox.Show("Uspešno obrisan korisnik!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    konekcija.Close();
                }
            }
            else
            {
                MessageBox.Show("Morate biti ulogovani kao administrator da biste napravili ove promene!");
            }
        }

    }
}
